package com.bb.flow.api.type;

/**
 * @author bigbeard on 17-7-6.
 * 运行状态枚举类
 */
public enum ExecuteState {
    /**
     * 未开始
     */
    NOT_START("未开始", 0),
    /**
     * 准备中,表示放到执行队列中，但还没有开始执行
     */
    PREPARE("准备中", 1),
    /**
     * 执行中，正在执行
     */
    EXECUTING("执行中", 2),
    /**
     * 执行结束
     */
    FINISH("执行结束", 3),
    /**
     * 因异常导致节点执行结束
     */
    EXCEPTION("异常", 4),

    /**
     * 只针对容器和子流程有效
     */
    CANCEL("取消", 5),
    /**
     * 当前节点配置了等待固定时间后,超时时会设置为此状态
     */
    TIME_OUT("执行超时", 6),

    /**
     * 针对容器和子流程有效
     */
    NOT_EXECUTE("未执行", 7);

    private final String text;
    private final int index;

    ExecuteState(String text, int index) {
        this.text = text;
        this.index = index;
    }

    /**
     * 根绝显示名称获取枚举
     *
     * @param t 描述
     * @return 枚举
     */
    public ExecuteState getByText(String t) {
        for (ExecuteState executeState : values()) {
            if (executeState.getText().equals(t)) {
                return executeState;
            }
        }
        return null;
    }

    /**
     * 根绝显示名称获取枚举
     *
     * @param i 值
     * @return 枚举
     */
    public ExecuteState getByIndex(int i) {
        for (ExecuteState executeState : values()) {
            if (executeState.getIndex() == i) {
                return executeState;
            }
        }
        return null;
    }

    public String getText() {
        return text;
    }

    public int getIndex() {
        return index;
    }

}
